const express = require('express');
const cors = require('cors');
const path = require('path');
// const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');

const users_router = require('./routes/users');

let app = express();

// 允许所有域名访问（仅用于开发环境）
app.use(cors());

// 确保 Express 可以解析 JSON 请求体
app.use(express.json());

 // 解析URL编码的请求体，extended选项允许解析复杂的编码格式
app.use(express.urlencoded({ extended: true }));

// 输出所有请求的日志
app.use(function (req, res, next) {
    // 记录请求到达服务端的时间戳
    req.time = new Date();
    // 输出请求的日志 - 如果使用了反向代理 此处的地址可能不是客户端的 需要修改
    console.log(`${req.connection.remoteAddress} | ${req.time} | ${req.originalUrl} | `);
    next();
});

// 设置http请求报文的长度限制为 15M
app.use(bodyParser.json({limit: '15mb'}));
app.use(bodyParser.urlencoded({limit: '15mb', extended: true}));

// 服务端解析json数据的中间件
app.use(express.json());
// 服务端解析GET请求参数的中间件
app.use(express.urlencoded({ extended: false }));
// 服务端解析cookie的中间件（暂时不使用）
// app.use(cookieParser());

// 挂载静态资源
app.use(express.static(path.join(__dirname, 'public')));

// 动态路由
app.use('/users', users_router);

// //当客户端发送GET请求到/api/wechatlogin这个URL路径时，调用fetchWechatUserInfo函数来处理这个请求。
// app.get('/api/wechatlogin', users_router.fetchWechatUserInfo);

// catch 404 and forward to error handler
app.use(function (req, res, next) {
    // res.send('404 Not Found');
    res.status(404);
    res.statusMessage = '404 not found';
    res.sendFile(path.join(__dirname, '/views/error.html'))
});

// app对象暴露
module.exports = app;
